package com.powerbosframework.jdbc.core;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import com.powerbosframework.jdbc.id.Identifier;
import com.powerbosframework.jdbc.core.PageParam;

/**
 * JDBC查詢模板接口
 * 
 * @author youfu.wang
 * @version 1.0
 */
public interface QueryTmplt {
	/**
	 * 得到最大行数
	 * 
	 * @param sql
	 * @return
	 * @throws SQLException
	 */
	public int getROWNUM(String sql) throws SQLException;
	/**
	 * 执行给定的SQL语句，该语句返回单个对象
	 * 
	 * @param sql
	 * @return
	 * @throws SQLException
	 */
	public Object[] queryForArray(String sql) throws SQLException;

	/**
	 * 执行给定的SQL语句，该语句返回单个对象
	 * 
	 * @param sql
	 * @param args
	 * @return
	 * @throws SQLException
	 */
	public Object[] queryForArray(String sql, Object[] args)
			throws SQLException;

	/**
	 * 执行给定的SQL语句，该语句返回单个对象
	 * 
	 * @param sql
	 * @param args
	 * @return
	 * @throws SQLException
	 */
	public Object[] queryForArray(String sql, Map args) throws SQLException;

	/**
	 * 执行给定的SQL语句，该语句返回多个对象的列表
	 * 
	 * @param sql
	 * @return
	 * @throws SQLException
	 */
	public List queryForList(String sql) throws SQLException;

	/**
	 * 执行给定的SQL语句，该语句返回多个对象的列表
	 * 
	 * @param sql
	 * @param args
	 * @return
	 * @throws SQLException
	 */
	public List queryForList(String sql, Object[] args) throws SQLException;

	/**
	 * 执行给定的SQL语句，该语句返回多个对象的列表
	 * 
	 * @param sql
	 * @param args
	 * @return
	 * @throws SQLException
	 */
	public List queryForList(String sql, Map args) throws SQLException;

	/**
	 * 执行给定的SQL语句，该语句返回分面查询对象的列表
	 * 
	 * @param sql
	 * @param pageParam
	 * @return
	 * @throws SQLException
	 */
	public List queryForPage(String sql, PageParam pageParam)
			throws SQLException;

	/**
	 * 执行给定的SQL语句，该语句返回分面查询对象的列表
	 * 
	 * @param sql
	 * @param args
	 * @param pageParam
	 * @return
	 * @throws SQLException
	 */
	public List queryForPage(String sql, Object[] args, PageParam pageParam)
			throws SQLException;
	/**
	 * 执行给定的SQL语句，该语句返回分面查询对象的列表
	 * 
	 * @param sql
	 * @param args
	 * @param pageParam
	 * @return
	 * @throws SQLException
	 */
	public List queryForPage(String sql, Map args, PageParam pageParam)
			throws SQLException;
}
